(0) Obligation:

The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^3).


The TRS R consists of the following rules:

f(0) → true
f(1) → false
f(s(x)) → f(x)
if(true, x, y) → x
if(false, x, y) → y
g(s(x), s(y)) → if(f(x), s(x), s(y))
g(x, c(y)) → g(x, g(s(c(y)), y))

Rewrite Strategy: INNERMOST

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted Cpx (relative) TRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(0) → c1
F(1) → c2
F(s(z0)) → c3(F(z0))
IF(true, z0, z1) → c4
IF(false, z0, z1) → c5
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
S tuples:

F(0) → c1
F(1) → c2
F(s(z0)) → c3(F(z0))
IF(true, z0, z1) → c4
IF(false, z0, z1) → c5
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
K tuples:none
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, IF, G

Compound Symbols:

c1, c2, c3, c4, c5, c6, c7

(3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing nodes:

F(0) → c1
F(1) → c2
IF(false, z0, z1) → c5
IF(true, z0, z1) → c4

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
S tuples:

F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(IF(f(z0), s(z0), s(z1)), F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
K tuples:none
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c6, c7

(5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing tuple parts

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
S tuples:

F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
K tuples:none
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c7, c6

(7) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
We considered the (Usable) Rules:

g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
if(true, z0, z1) → z0
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
if(false, z0, z1) → z1
And the Tuples:

F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(1) = 0   
POL(F(x1)) = 0   
POL(G(x1, x2)) = x2   
POL(c(x1)) = [1] + x1   
POL(c3(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1, x2)) = x1 + x2   
POL(f(x1)) = 0   
POL(false) = 0   
POL(g(x1, x2)) = 0   
POL(if(x1, x2, x3)) = x2 + x3   
POL(s(x1)) = 0   
POL(true) = 0   

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
S tuples:

F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c7, c6

(9) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

G(s(z0), s(z1)) → c6(F(z0))

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
S tuples:

F(s(z0)) → c3(F(z0))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c7, c6

(11) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) by

G(x0, c(s(z1))) → c7(G(x0, if(f(c(s(z1))), s(c(s(z1))), s(z1))), G(s(c(s(z1))), s(z1)))
G(x0, c(c(z1))) → c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1)))

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(x0, if(f(c(s(z1))), s(c(s(z1))), s(z1))), G(s(c(s(z1))), s(z1)))
G(x0, c(c(z1))) → c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1)))
S tuples:

F(s(z0)) → c3(F(z0))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c6, c7

(13) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing tuple parts

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(c(z1))) → c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1)))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
S tuples:

F(s(z0)) → c3(F(z0))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c6, c7, c7

(15) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace G(x0, c(c(z1))) → c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1))) by

G(x0, c(c(s(z1)))) → c7(G(x0, g(s(c(c(s(z1)))), if(f(c(s(z1))), s(c(s(z1))), s(z1)))), G(s(c(c(s(z1)))), c(s(z1))))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(s(z1)))) → c7(G(x0, g(s(c(c(s(z1)))), if(f(c(s(z1))), s(c(s(z1))), s(z1)))), G(s(c(c(s(z1)))), c(s(z1))))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
S tuples:

F(s(z0)) → c3(F(z0))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c6, c7, c7

(17) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing tuple parts

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

F(s(z0)) → c3(F(z0))
G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))
S tuples:

F(s(z0)) → c3(F(z0))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

F, G

Compound Symbols:

c3, c6, c7, c7

(19) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace F(s(z0)) → c3(F(z0)) by

F(s(s(y0))) → c3(F(s(y0)))

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(s(z0), s(z1)) → c6(F(z0))
G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))
F(s(s(y0))) → c3(F(s(y0)))
S tuples:

F(s(s(y0))) → c3(F(s(y0)))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(z0), s(z1)) → c6(F(z0))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c6, c7, c7, c3

(21) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace G(s(z0), s(z1)) → c6(F(z0)) by

G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))
F(s(s(y0))) → c3(F(s(y0)))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
S tuples:

F(s(s(y0))) → c3(F(s(y0)))
K tuples:

G(z0, c(z1)) → c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c7, c7, c3, c6

(23) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing nodes:

G(x0, c(s(z1))) → c7(G(s(c(s(z1))), s(z1)))
G(x0, c(c(s(z1)))) → c7(G(s(c(c(s(z1)))), c(s(z1))))

(24) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1)))
F(s(s(y0))) → c3(F(s(y0)))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
S tuples:

F(s(s(y0))) → c3(F(s(y0)))
K tuples:

G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c7, c7, c3, c6

(25) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace G(x0, c(c(x1))) → c7(G(s(c(c(x1))), c(x1))) by

G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))

(26) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
F(s(s(y0))) → c3(F(s(y0)))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))
S tuples:

F(s(s(y0))) → c3(F(s(y0)))
K tuples:

G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c7, c3, c6, c7

(27) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace F(s(s(y0))) → c3(F(s(y0))) by

F(s(s(s(y0)))) → c3(F(s(s(y0))))

(28) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
S tuples:

F(s(s(s(y0)))) → c3(F(s(s(y0))))
K tuples:

G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0))))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c7, c6, c7, c3

(29) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace G(s(s(s(y0))), s(z1)) → c6(F(s(s(y0)))) by

G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))

(30) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
S tuples:

F(s(s(s(y0)))) → c3(F(s(s(y0))))
K tuples:

G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c7, c7, c3, c6

(31) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace G(z0, c(c(c(y1)))) → c7(G(s(c(c(c(y1)))), c(c(y1)))) by

G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))

(32) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))
S tuples:

F(s(s(s(y0)))) → c3(F(s(s(y0))))
K tuples:

G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c7, c7, c3, c6

(33) CdtRuleRemovalProof (UPPER BOUND(ADD(n^3)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

F(s(s(s(y0)))) → c3(F(s(s(y0))))
We considered the (Usable) Rules:none
And the Tuples:

G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))
The order we found is given by the following interpretation:
Matrix interpretation [MATRO]:
Non-tuple symbols:
M( s(x1) ) =
/0\
|0|
\2/
+
/001\
|013|
\000/
·x1

M( true ) =
/0\
|0|
\0/

M( c(x1) ) =
/0\
|0|
\0/
+
/000\
|000|
\000/
·x1

M( f(x1) ) =
/0\
|0|
\0/
+
/000\
|000|
\000/
·x1

M( if(x1, ..., x3) ) =
/0\
|0|
\0/
+
/000\
|000|
\000/
·x1+
/000\
|000|
\000/
·x2+
/000\
|000|
\000/
·x3

M( 0 ) =
/0\
|0|
\0/

M( 1 ) =
/0\
|0|
\0/

M( g(x1, x2) ) =
/0\
|0|
\0/
+
/000\
|000|
\000/
·x1+
/000\
|000|
\000/
·x2

M( false ) =
/0\
|0|
\0/

Tuple symbols:
M( G(x1, x2) ) =
/0\
|0|
\0/
+
/130\
|010|
\000/
·x1+
/000\
|000|
\000/
·x2

M( c6(x1) ) =
/0\
|2|
\0/
+
/100\
|000|
\000/
·x1

M( c3(x1) ) =
/0\
|0|
\0/
+
/102\
|000|
\001/
·x1

M( F(x1) ) =
/0\
|0|
\1/
+
/030\
|000|
\000/
·x1

M( c7(x1, x2) ) =
/0\
|0|
\0/
+
/100\
|000|
\000/
·x1+
/100\
|000|
\000/
·x2

M( c7(x1) ) =
/0\
|0|
\0/
+
/100\
|010|
\001/
·x1


Matrix type:
We used a basic matrix type which is not further parametrizeable.


As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.

(34) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(0) → true
f(1) → false
f(s(z0)) → f(z0)
if(true, z0, z1) → z0
if(false, z0, z1) → z1
g(s(z0), s(z1)) → if(f(z0), s(z0), s(z1))
g(z0, c(z1)) → g(z0, g(s(c(z1)), z1))
Tuples:

G(x0, c(c(c(z1)))) → c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1))))
G(z0, c(c(c(c(y1))))) → c7(G(s(c(c(c(c(y1))))), c(c(c(y1)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
G(z0, c(c(c(c(c(y1)))))) → c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1))))))
S tuples:none
K tuples:

G(s(s(s(s(y0)))), s(z1)) → c6(F(s(s(s(y0)))))
F(s(s(s(y0)))) → c3(F(s(s(y0))))
Defined Rule Symbols:

f, if, g

Defined Pair Symbols:

G, F

Compound Symbols:

c7, c7, c3, c6

(35) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)

The set S is empty

(36) BOUNDS(1, 1)